/*
 * Copyright (c) 2017. 深圳一七科技. All rights reserved.
 */

package com.yiqi.liebang.feature.mine.contract;

import com.suozhang.framework.entity.bo.UserInfoBo;
import com.suozhang.framework.framework.BasePresenter;
import com.suozhang.framework.framework.BaseView;
import com.yiqi.liebang.entity.bo.AllAuthBo;
import com.yiqi.liebang.entity.bo.EducationBo;
import com.yiqi.liebang.entity.bo.UserCardBo;
import com.yiqi.liebang.entity.bo.UserCenterBo;
import com.yiqi.liebang.entity.bo.UserParamBo;
import com.yiqi.liebang.entity.bo.WorkBo;

import java.util.List;

import io.reactivex.Observable;

/**
 * LIJUWEN
 *
 * @email yiyayiyayaoljw@gmail.com
 * @date 2018/7/11 9:06
 */
public interface CertificationContract {

    interface Model {

        Observable<UserCardBo> getUserCardData();

        Observable<String> userCertification(
                String userHead,
                String userName,
                String userLabelId,
                String userIndustry,
                String userWorkAddress,
                String userDetailAddress,
                String userPhone,
                String userEmail,
                String wxId,
                String cardNumber,
                String cardImageUrl
        );


        Observable<WorkBo> userGetWork(WorkBo workBo);

        Observable<EducationBo> userGetEducation(EducationBo workBo);

        Observable<String> authWork(String id,
                                    String certificateImage,
                                    String licenseImage,
                                    String workCardImage,
                                    String visitingImage);

        Observable<String> authEdu(String id,
                                   String DiplomaImage,
                                   String degreeImage
        );

        Observable<List<WorkBo>> getWorkList();

        Observable<List<EducationBo>> getEduList();

        Observable<String> uploadAuthenticationImage(String authenticationId,
                                                     String uploadType,
                                                     String image);

        Observable<String> uploadBasicInfo(
                String userHead,
                String userName,
                String userLabelId,
                String userIndustry,
                String userWorkAddress,
                String userDetailAddress,
                String userPhone,
                String userEmail,
                String wxId,
                String cardNumber,
                String uploadType,
                String image);

        Observable<UserCardBo> getUserSaveData();

        Observable<String> toPersonalAuthentication(AllAuthBo allAuthBo);
    }

    interface View extends BaseView {

        void showWorkSuccess(WorkBo workBo);

        void showUserCardSuccess(UserCardBo s);

        void showEducationSuccess(EducationBo workBo);

        void showAuthWorkSuccess();

        void showCertificationSuccess();

        void showError(String error);

        void showWorkListSuccess(List<WorkBo> workBos);

        void showEduListSuccess(List<EducationBo> workBos);

        void showUploadAuthenticationImageSuccess();
    }


    interface Presenter extends BasePresenter {

        void getUserCardData();

        void userCertification(
                String userHead,
                String userName,
                String userLabelId,
                String userIndustry,
                String userWorkAddress,
                String userDetailAddress,
                String userPhone,
                String userEmail,
                String wxId,
                String cardNumber,
                String cardImageUrl
        );

        void userGetWork(String id);


        void authWork(String id,
                      String certificateImage,
                      String licenseImage,
                      String workCardImage,
                      String visitingImage);

        void userGetEducation(String id);

        void authEdu(String id,
                     String DiplomaImage,
                     String degreeImage
        );

        void getWorkList();

        void getEduList();

        void uploadAuthenticationImage(String authenticationId,
                                       String uploadType,
                                       String image);

        void uploadBasicInfo(
                String userHead,
                String userName,
                String userLabelId,
                String userIndustry,
                String userWorkAddress,
                String userDetailAddress,
                String userPhone,
                String userEmail,
                String wxId,
                String cardNumber,
                String uploadType,
                String image);

        void getUserSaveData();

        void toPersonalAuthentication(String educationId,
                                      String occupationId);

    }
}
